// 解题思路：贪心策略
// 如果收到 10 元，只能找 5 元
// 如果收到 20 元，尽量找一张 10 元的，一张 5 元的（贪心策略），如果没有 10 元，只能找 3 张 5 元的

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int a = 0, b = 0, c = 0;
        int n = bills.length;
        for(int i = 0; i < n; i++){
            if(bills[i] == 5) a++;
            else if(bills[i] == 10){
                if(a > 0) a--;
                else return false;
                b++;
            }else{
                if(b > 0) {
                    b--;
                    if(a > 0) a--;
                    else return false;
                    c++;
                }
                else{
                    if(a >= 3) a-= 3;
                    else return false;
                    c++;
                }
            }
        }
        return true;
    }
}